﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel.Activation;
using System.ServiceModel;
using ibba.src.norisk.Contracts;
using ibba.src.norisk.BusinessLogic;

namespace ibba.src.norisk.ServiceImplementation
{
    [AspNetCompatibilityRequirements(RequirementsMode = System.ServiceModel.Activation.AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession,
                     ConcurrencyMode = ConcurrencyMode.Multiple)]

    public class ServiceDeParaAreaSubLimite : IServiceDeParaAreaSubLimite
    {
        //private DeParaTipoLimiteBL _deParaTipoLimiteBL;
        private DeParaAreaSubLimiteBL _deParaAreaSublimiteBL;

        public ServiceDeParaAreaSubLimite()
        {
            try
            {
                //_deParaTipoLimiteBL = new DeParaTipoLimiteBL();
                _deParaAreaSublimiteBL = new DeParaAreaSubLimiteBL();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);                   
            }
        }
        /*
        #region Tipo de Limite

        public List<TipoLimite> ObterListaTipoLimite()
        {
            List<TipoLimite> retorno = new List<TipoLimite>();
            try
            {
                retorno = _deParaTipoLimiteBL.ObterListaTipoLimite();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);                
            }
            return retorno;
        }

        #endregion

        #region Produto

        public List<ProdutoItau> ObterListaProdutoPorCodigoTipoLimite(int codTipoLimite)
        {
            List<ProdutoItau> retorno = new List<ProdutoItau>();
            try
            {
                retorno = _deParaTipoLimiteBL.ObterListaProdutoPorCodigoTipoLimite(codTipoLimite);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
            return retorno;
        }

        public List<TipoLimite> InserirProdutos(List<ProdutoItau> produtos)
        {
            List<TipoLimite> retorno = new List<TipoLimite>();
            try
            {
                retorno = _deParaTipoLimiteBL.InserirProdutos(produtos);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
            return retorno;
        }

        public void ExcluirProdutos(List<ProdutoItau> produtos)
        {
            try
            {
                _deParaTipoLimiteBL.ExcluirProdutos(produtos);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
        }

        public List<ProdutoItau> ObterListaProdutoPorDescricao(string descricao)
        {
            List<ProdutoItau> retorno = new List<ProdutoItau>();
            try
            {
                retorno = _deParaTipoLimiteBL.ObterListaProdutoPorDescricao(descricao);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);                
            }
            return retorno;
        }

        #endregion

        #region Estrategia

        public List<Estrategia> ObterListaEstrategiaPorCodigoTipoLimite(int codTipoLimite)
        {
            List<Estrategia> retorno = new List<Estrategia>();
            try
            {
                retorno = _deParaTipoLimiteBL.ObterListaEstrategiaPorCodigoTipoLimite(codTipoLimite);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
            return retorno;
        }

        public List<TipoLimite> InserirEstrategias(List<Estrategia> estrategias)
        {
            List<TipoLimite> retorno = new List<TipoLimite>();
            try
            {
                retorno = _deParaTipoLimiteBL.InserirEstrategias(estrategias);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
            return retorno;
        }

        public void ExcluirEstrategias(List<Estrategia> estrategias)
        {
            try
            {
                _deParaTipoLimiteBL.ExcluirEstrategias(estrategias);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
        }

        public List<Estrategia> ObterListaEstrategiaPorDescricao(string descricao)
        {
            List<Estrategia> retorno = new List<Estrategia>();
            try
            {
                retorno = _deParaTipoLimiteBL.ObterListaEstrategiaPorDescricao(descricao);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
            return retorno;
        }

        #endregion

        #region AreaInstitucional

        //public List<AreaInstitucional> ObterListaAreaInstPorCodigoTipoLimite(int codTipoLimite)
        //{
        //    var retorno = new List<AreaInstitucional>();
        //    try
        //    {
        //        retorno = _deParaTipoLimiteBL.ObterListaAreaInstPorCodigoTipoLimite(codTipoLimite);
        //    }
        //    catch (Exception ex)
        //    {
        //        global.ErrorHandler.LogAndThrowFaultException(ex);
        //    }
        //    return retorno;
        //}

        public List<TipoLimite> InserirAreaInstitucional(List<AreaInstitucional> areas)
        {
            var retorno = new List<TipoLimite>();
            try
            {
                retorno = _deParaTipoLimiteBL.InserirAreaInstitucional(areas);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
            return retorno;
        }

        public void ExcluirAreaInstitucional(List<AreaInstitucional> areas)
        {
            try
            {
                _deParaTipoLimiteBL.ExcluirAreaInstitucional(areas);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
        }

        public List<AreaInstitucional> ObterListaAreaInstPorDescricao(string descricao)
        {
            var retorno = new List<AreaInstitucional>();
            try
            {
                retorno = _deParaTipoLimiteBL.ObterListaAreaInstPorDescricao(descricao);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }
            return retorno;
        }

        #endregion

       */

        #region IServiceDeParaAreaSublimite Members

        public List<AreaSubLimite> ObterAreasSublimite()
        {
            try
            {
                return _deParaAreaSublimiteBL.ObterAreasSublimite();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }

        public List<ProdutoItau> ObterProdutosItau()
        {
            try
            {
                return _deParaAreaSublimiteBL.ObterProdutosItau();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }

        public List<Estrategia> ObterEstrategias()
        {
            try
            {
                return _deParaAreaSublimiteBL.ObterEstrategias();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }
        
        public List<AreaInstitucional> ObterAreasInstitucionais()
        {
            try
            {
                return _deParaAreaSublimiteBL.ObterAreasInstitucionais();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }
                
        public DeParaAreaSubLimite ObterDeParaAreaSubLimite(int pIdAreaSubLimite)
        {
            try
            {
                return _deParaAreaSublimiteBL.ObterDeParaAreaSubLimite(pIdAreaSubLimite);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }

        public List<DeParaAreaSubLimite> ObterTodos()
        {
            try
            {
                return _deParaAreaSublimiteBL.ObterTodos();
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }


        public DeParaAreaSubLimite SalvarDePara(DeParaAreaSubLimite pEntidade)
        {
            try
            {
                return _deParaAreaSublimiteBL.SalvarDePara(pEntidade);
            }
            catch (Exception ex)
            {
                global.ErrorHandler.LogAndThrowFaultException(ex);
            }

            return null;
        }

        #endregion
    }
}
